﻿#pragma once

#include <learn/ais/ais_object.h>
#include <learn/mesh/mesh.h>

namespace xi
{

namespace ais
{

using namespace xi::mesh;

class EXT_SYMBOL AIS_Mesh : public AIS_Object
{
  public:
    AIS_Mesh(AIS_Mesh &&) = delete;

    /**
     * @brief 几何数据构造
     *
     * @param[in] mesh
     */
    explicit AIS_Mesh(Mesh_Data mesh);

    /**
     * @brief 获得网格数据
     *
     * @return Mesh_Data
     */
    Mesh_Data mesh() const;

    /**
     * @brief 初始化消息
     *
     * @param[in] msg
     */
    void visit(AIS_InitMsg *msg) override;

    /**
     * @brief 移动消息
     *
     * @param[in] msg
     */
    void visit(AIS_MoveMsg *msg) override;

  protected:
    Mesh_Data m_mesh;
};

} // namespace ais

} // namespace xi
